iT邦幫忙

2024 iThome 鐵人賽

DAY 26
1
Modern Web

Go 快 Go 高效: 從基礎語法到現代Web應用開發系列 第 26

【Day26】即時串流通信服務 III | 測試 gRPC 方法 × Apifox/Postman

  • 分享至 

  • xImage
  •  

前言

那我們前一篇已經跟大家介紹了如何開發一個 gRPC 的服務,今天就來跟大家介紹如何啟動我們的服務和測試我們的 api!

啟動服務

  • 首先我們先在 terminal 下執行下面指令:
make

小複習:因為我們把 all: server client 寫在 Makefile 的最上方,所以他預設就是執行這個腳本。

然後就會發現他會在我們專案中生成 ./bin/ 目錄,裡面放著 clientserver 的建置檔。

  • 接著我們在繼續在執行下面指令來運行我們的 server:
make run-server

出現下面內容就表示有成功

go build -o bin/server ./cmd
./bin/server -mode=server
2024/10/03 22:21:00 gRPC server listening on :50051

測試服務

終端機(Terminal)

因為我們有撰寫 client 端,所以我們可以直接在 terminal 下查看回應:
(小提示:記得開一個新的 terminal )

make run-client
  • 那他的回應會像這樣:
go build -o bin/client ./cmd
./bin/client -mode=client -name=BeeChat
2024/10/03 21:12:55 Greeting: Hello, BeeChat!

Postman

  1. 我們從左上方的 New 去選取我們要創建的項目
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850uHanayK1zA.png

  2. 我們選擇 gRPC 服務
    https://ithelp.ithome.com.tw/upload/images/20241003/201618509X4VAMxLpD.png

  3. 然後我們在中間選擇 Service definition -> Import a .proto file -> Choose a File 來去選取我們專案下的.proto 檔案。
    https://ithelp.ithome.com.tw/upload/images/20241003/201618501lnRztoffx.png

https://ithelp.ithome.com.tw/upload/images/20241003/20161850nVVbvClIvQ.png

  1. 然後很貼心的,我們可以透過 Import as API 來自動導入我們實現的所有 api 接口。
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850yRcv641YKy.png

  2. 接著從 Select a method 選擇我們寫好的 SayHello api,然後在 Message 下選擇 Use Example Message 來快速的幫我們建置好一個回覆範例。
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850HXUBYg6cFU.png

  3. 接著我們輸入剛剛啟好的本地端的50051連接埠後就能查看輸出格式。
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850k5TlwWLc1R.png

Apifox

  1. 我們先從左上角回到主窗口後,選擇新建項目
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850CVHPwqV4qA.png

  2. 然後選擇我們的 gRPC 服務後,隨便輸入一個名稱後我們就建立它
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850z5jF4YbuTP.png

  3. 從彈出窗口中,我們選擇專案下的.proto 檔案,後按添加
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850powRlrNV8e.png

  4. 從左方的接口 -> 根目錄 -> 選擇我們寫好的 api ,然後一樣很方便的我們可以使用自動生成
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850ggFhvR4BiA.png

  5. 接著我們一樣輸入本地端的50051連接埠後就能查看輸出格式。
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850oKYJwZTqZn.png

為什麼使用 Apifox 做測試

那我要來偷偷吹捧一下 Apifox ,回答為什麼我每個測試環節都要加上 Apifox 的部分。

  • 特色1-支援中文:因為我蠻懶的看英文內容,寫好一隻 api 只想趕快看結果如何,所以越直觀的界面我越喜歡/images/emoticon/emoticon12.gif
  • 特色2-UI/UX 設計的很好看:就像我第一天提到的,我在開發前端時很重視外觀介面跟使用者體驗,那當我接觸 Apifox 後就愛上他的現代化外觀和操作體驗了。
  • 特色3-API Hub:他有許多其他公司開放的 API 範例,我可以從上面快速找到我要用到的 API 類型然後能夠知道這隻 API 的 path 要帶什麼,Headers 要用什麼方式包裝,body 有哪些參數以及要帶入什麼內容都有範例可以看,真的比看官方那又臭又長的文檔快很多,而且如果某間公司推出新的 API 他也會更新資訊,所以蠻不錯的。
    https://ithelp.ithome.com.tw/upload/images/20241003/20161850xoT3LpjavJ.png
  • 特色4-自動匯入接口:這是我在開發 Spring-Boot 時無意發現的,它可以在 IntelliJ IDEA 中使用抓取我 Controller 內的 API 然後像我們上面匯入 .proto 檔案一樣,自動生成所有 API 格式,這功能真的超方便的(不知道 GoLand 能不能也開發一下這個插件/images/emoticon/emoticon56.gif)
    https://ithelp.ithome.com.tw/upload/images/20241003/201618502OuyeD8poR.png
    目前就研究到這些,或許還有很多強大功能我還沒發現,如果你也感興趣的話歡迎多多嘗試!

延伸閱讀

那就如我前面篇幅所說的 gRPC 的預設傳輸層是基於 HTTP/2,那如果你想要開發的是 HTTP/3 的話,可以去研究看看,像是在 Curl 8.9.0 的版本更新中對 QUIC 和 HTTP/3 提供支援,那如果有這方面需求的,可以去試試看研究 QUIC [📎GO - QUIC Github倉庫]


上一篇
【Day25】即時串流通信服務 II | 在 Golang 中開發 gRPC 服務
下一篇
【Day27】隱私守護專家 I | 環境變數建立
系列文
Go 快 Go 高效: 從基礎語法到現代Web應用開發27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言